/*
 * @Description: 配置文件
 * @Author: DHL
 * @Date: 2021-12-03 15:20:09
 * @LastEditors: DHL
 * @LastEditTime: 2022-11-25 15:23:51
 */
import { defineConfig, loadEnv } from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'

export default defineConfig(({ command, mode, ssrBuild }) => {
  // 根据当前工作目录中的 `mode` 加载 .env 文件
  // 设置第三个参数为 '' 来加载所有环境变量，而不管是否有 `VITE_` 前缀。
  const env = loadEnv(mode, process.cwd(), '')

  const config = {
    plugins: createVitePlugins(env, command === 'build'),
    // vite 配置
    define: {
      __APP_ENV__: env.APP_ENV
    },
    // 这里是将src目录配置别名为 /@ 方便在项目中导入src目录下的文件
    resolve: {
      alias: {
        '/@': path.resolve(process.cwd(), 'src')
      }
    }
  }

  if (command === 'serve') {
    Object.assign(config, {
      // dev 独有配置
      server: {
        proxy: {
          '/api': {
            target: env.VITE_APP_BASE_API_URL,
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/api/, '')
          }
        }
      }
    })
  } else {
    // command === 'build'

    Object.assign(config, {
      // build 独有配置
      target: 'modules',
      outDir: 'dist', //指定输出路径
      assetsDir: 'assets', // 指定生成静态资源的存放路径
      minify: 'terser' // 混淆器，terser构建后文件体积更小
    })
  }

  return config
})
